mruby 4.0.0
mruby is the lightweight implementation of the Ruby language
Loading...
Searching...
No Matches
opcode.h File Reference

More...

#include <mruby/ops.h>
Include dependency graph for opcode.h:

Go to the source code of this file.

Macros

#define OPCODE(x, _)
 
#define OP_LOADT   OP_LOADTRUE
 
#define OP_LOADF   OP_LOADFALSE
 
#define OP_L_STRICT   1
 
#define OP_L_CAPTURE   2
 
#define OP_L_METHOD   OP_L_STRICT
 
#define OP_L_LAMBDA   (OP_L_STRICT|OP_L_CAPTURE)
 
#define OP_L_BLOCK   OP_L_CAPTURE
 
#define PEEK_B(pc)
 
#define PEEK_S(pc)
 
#define PEEK_W(pc)
 
#define READ_B()
 
#define READ_S()
 
#define READ_W()
 
#define FETCH_Z()
 
#define FETCH_B()
 
#define FETCH_BB()
 
#define FETCH_BBB()
 
#define FETCH_BS()
 
#define FETCH_BSS()
 
#define FETCH_S()
 
#define FETCH_W()
 
#define FETCH_Z_1()
 
#define FETCH_B_1()
 
#define FETCH_BB_1()
 
#define FETCH_BBB_1()
 
#define FETCH_BS_1()
 
#define FETCH_BSS_1()
 
#define FETCH_S_1()
 
#define FETCH_W_1()
 
#define FETCH_Z_2()
 
#define FETCH_B_2()
 
#define FETCH_BB_2()
 
#define FETCH_BBB_2()
 
#define FETCH_BS_2()
 
#define FETCH_BSS_2()
 
#define FETCH_S_2()
 
#define FETCH_W_2()
 
#define FETCH_Z_3()
 
#define FETCH_B_3()
 
#define FETCH_BB_3()
 
#define FETCH_BBB_3()
 
#define FETCH_BS_3()
 
#define FETCH_BSS_3()
 
#define FETCH_S_3()
 
#define FETCH_W_3()
 

Enumerations

enum  mrb_insn {
  OP_NOP , OP_MOVE , OP_LOADL , OP_LOADI8 ,
  OP_LOADINEG , OP_LOADI__1 , OP_LOADI_0 , OP_LOADI_1 ,
  OP_LOADI_2 , OP_LOADI_3 , OP_LOADI_4 , OP_LOADI_5 ,
  OP_LOADI_6 , OP_LOADI_7 , OP_LOADI16 , OP_LOADI32 ,
  OP_LOADSYM , OP_LOADNIL , OP_LOADSELF , OP_LOADTRUE ,
  OP_LOADFALSE , OP_GETGV , OP_SETGV , OP_GETSV ,
  OP_SETSV , OP_GETIV , OP_SETIV , OP_GETCV ,
  OP_SETCV , OP_GETCONST , OP_SETCONST , OP_GETMCNST ,
  OP_SETMCNST , OP_GETUPVAR , OP_SETUPVAR , OP_GETIDX ,
  OP_GETIDX0 , OP_SETIDX , OP_JMP , OP_JMPIF ,
  OP_JMPNOT , OP_JMPNIL , OP_JMPUW , OP_EXCEPT ,
  OP_RESCUE , OP_RAISEIF , OP_MATCHERR , OP_SSEND ,
  OP_SSEND0 , OP_SSENDB , OP_SEND , OP_SEND0 ,
  OP_SENDB , OP_CALL , OP_BLKCALL , OP_SUPER ,
  OP_ARGARY , OP_ENTER , OP_KEY_P , OP_KEYEND ,
  OP_KARG , OP_RETURN , OP_RETURN_BLK , OP_RETSELF ,
  OP_RETNIL , OP_RETTRUE , OP_RETFALSE , OP_BREAK ,
  OP_BLKPUSH , OP_ADD , OP_ADDI , OP_SUB ,
  OP_SUBI , OP_ADDILV , OP_SUBILV , OP_MUL ,
  OP_DIV , OP_EQ , OP_LT , OP_LE ,
  OP_GT , OP_GE , OP_ARRAY , OP_ARRAY2 ,
  OP_ARYCAT , OP_ARYPUSH , OP_ARYSPLAT , OP_AREF ,
  OP_ASET , OP_APOST , OP_INTERN , OP_SYMBOL ,
  OP_STRING , OP_STRCAT , OP_HASH , OP_HASHADD ,
  OP_HASHCAT , OP_LAMBDA , OP_BLOCK , OP_METHOD ,
  OP_RANGE_INC , OP_RANGE_EXC , OP_OCLASS , OP_CLASS ,
  OP_MODULE , OP_EXEC , OP_DEF , OP_TDEF ,
  OP_SDEF , OP_ALIAS , OP_UNDEF , OP_SCLASS ,
  OP_TCLASS , OP_DEBUG , OP_ERR , OP_EXT1 ,
  OP_EXT2 , OP_EXT3 , OP_STOP
}
 

Detailed Description

  • RiteVM operation codes

See Copyright Notice in mruby.h

Macro Definition Documentation

◆ FETCH_B

#define FETCH_B ( )
Value:
do {a=READ_B();} while (0)

◆ FETCH_B_1

#define FETCH_B_1 ( )
Value:
FETCH_S()

◆ FETCH_B_2

#define FETCH_B_2 ( )
Value:
FETCH_B()

◆ FETCH_B_3

#define FETCH_B_3 ( )
Value:
FETCH_B()

◆ FETCH_BB

#define FETCH_BB ( )
Value:
do {a=READ_B(); b=READ_B();} while (0)

◆ FETCH_BB_1

#define FETCH_BB_1 ( )
Value:
do {a=READ_S(); b=READ_B();} while (0)

◆ FETCH_BB_2

#define FETCH_BB_2 ( )
Value:
do {a=READ_B(); b=READ_S();} while (0)

◆ FETCH_BB_3

#define FETCH_BB_3 ( )
Value:
do {a=READ_S(); b=READ_S();} while (0)

◆ FETCH_BBB

#define FETCH_BBB ( )
Value:
do {a=READ_B(); b=READ_B(); c=READ_B();} while (0)

◆ FETCH_BBB_1

#define FETCH_BBB_1 ( )
Value:
do {a=READ_S(); b=READ_B(); c=READ_B();} while (0)

◆ FETCH_BBB_2

#define FETCH_BBB_2 ( )
Value:
do {a=READ_B(); b=READ_S(); c=READ_B();} while (0)

◆ FETCH_BBB_3

#define FETCH_BBB_3 ( )
Value:
do {a=READ_S(); b=READ_S(); c=READ_B();} while (0)

◆ FETCH_BS

#define FETCH_BS ( )
Value:
do {a=READ_B(); b=READ_S();} while (0)

◆ FETCH_BS_1

#define FETCH_BS_1 ( )
Value:
do {a=READ_S(); b=READ_S();} while (0)

◆ FETCH_BS_2

#define FETCH_BS_2 ( )
Value:
FETCH_BS()

◆ FETCH_BS_3

#define FETCH_BS_3 ( )
Value:
do {a=READ_S(); b=READ_S();} while (0)

◆ FETCH_BSS

#define FETCH_BSS ( )
Value:
do {a=READ_B(); b=READ_S(); c=READ_S();} while (0)

◆ FETCH_BSS_1

#define FETCH_BSS_1 ( )
Value:
do {a=READ_S(); b=READ_S();c=READ_S();} while (0)

◆ FETCH_BSS_2

#define FETCH_BSS_2 ( )
Value:
FETCH_BSS()

◆ FETCH_BSS_3

#define FETCH_BSS_3 ( )
Value:
FETCH_BSS_1()

◆ FETCH_S

#define FETCH_S ( )
Value:
do {a=READ_S();} while (0)

◆ FETCH_S_1

#define FETCH_S_1 ( )
Value:
FETCH_S()

◆ FETCH_S_2

#define FETCH_S_2 ( )
Value:
FETCH_S()

◆ FETCH_S_3

#define FETCH_S_3 ( )
Value:
FETCH_S()

◆ FETCH_W

#define FETCH_W ( )
Value:
do {a=READ_W();} while (0)

◆ FETCH_W_1

#define FETCH_W_1 ( )
Value:
FETCH_W()

◆ FETCH_W_2

#define FETCH_W_2 ( )
Value:
FETCH_W()

◆ FETCH_W_3

#define FETCH_W_3 ( )
Value:
FETCH_W()

◆ FETCH_Z

#define FETCH_Z ( )
Value:
/* nothing */

◆ FETCH_Z_1

#define FETCH_Z_1 ( )
Value:
FETCH_Z()

◆ FETCH_Z_2

#define FETCH_Z_2 ( )
Value:
FETCH_Z()

◆ FETCH_Z_3

#define FETCH_Z_3 ( )
Value:
FETCH_Z()

◆ OPCODE

#define OPCODE ( x,
_ )
Value:
OP_ ## x,

◆ PEEK_B

#define PEEK_B ( pc)
Value:
(*(pc))

◆ PEEK_S

#define PEEK_S ( pc)
Value:
((pc)[0]<<8|(pc)[1])

◆ PEEK_W

#define PEEK_W ( pc)
Value:
((pc)[0]<<16|(pc)[1]<<8|(pc)[2])

◆ READ_B

#define READ_B ( )
Value:
PEEK_B(pc++)

◆ READ_S

#define READ_S ( )
Value:
(pc+=2, PEEK_S(pc-2))

◆ READ_W

#define READ_W ( )
Value:
(pc+=3, PEEK_W(pc-3))